Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Створення багатопотокових ужитків

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2011
Тип роботи:
Лабораторна робота
Предмет:
Delphi

Частина тексту файла

Міністерство освіти і науки України Національний університет «Львівська політехніка» / Лабораторна робота на Delphi №7. Створення багатопотокових ужитків Створення багатопотокових ужитків Мета роботи: Вивчення можливостей системи програмування Delphi 7 по створенню багатопотокових ужитків. Завдання Створити проект - модель гри "Рухомий хробак". Переміщення хробака здійснюється в основному модулі, для відображення появи маленьких кульок, які з’їдає хробак, використати окремий потік. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Unit2, StdCtrls, ExtCtrls; type TForm1 = class(TForm) food: TShape; s1: TShape; s2: TShape; s3: TShape; procedure FormCreate(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Thread : Time; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Thread:=Time.Create(True); Thread.FreeOnTerminate:=true; Thread.Priority:=tpTimeCritical; Thread.Resume; score:=0; end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (key=vk_left) then begin dx:=-1; dy:=0; end; if (key=vk_right) then begin dx:=1; dy:=0; end; if (key=vk_up) then begin dx:=0; dy:=-1; end; if (key=vk_down) then begin dx:=0; dy:=1; end; end; end. unit Unit2; interface uses Classes, SysUtils, Dialogs; type Time = class(TThread) private procedure Myfood; procedure snake; procedure eat; procedure crash; protected procedure Execute; override; end; var dx,dy,oldx1,oldy1,oldx2,oldy2,score:integer; implementation uses Unit1; procedure Time.Myfood(); begin Repeat Form1.food.Top:=(Random(11)*25); Form1.food.Left:=(Random(11)*25); until ((Form1.food.Top<>Form1.s1.Top) and (Form1.food.Left<>Form1.s1.Left)) or ((Form1.food.Top<>Form1.s2.Top) and (Form1.food.Left<>Form1.s2.Left)) or ((Form1.food.Top<>Form1.s3.Top) and (Form1.food.Left<>Form1.s3.Left)); end; procedure Time.snake(); begin oldx1:=Form1.s1.Left; oldy1:=Form1.s1.Top; Form1.s1.Top:=Form1.s1.Top+dy*25; Form1.s1.left:=Form1.s1.left+dx*25; if ((dx=-1) and (dy=0)) then begin oldx2:=Form1.s2.Left; oldy2:=Form1.s2.Top; Form1.s2.Left:=oldx1; Form1.s2.Top:=oldy1; Form1.s3.Left:=oldx2; Form1.s3.Top:=oldy2; end; if (dx=1) and (dy=0) then begin oldx2:=Form1.s2.Left; oldy2:=Form1.s2.Top; Form1.s2.Left:=oldx1; Form1.s2.Top:=oldy1; Form1.s3.Left:=oldx2; Form1.s3.Top:=oldy2; end; if (dx=0) and (dy=1) then begin oldx2:=Form1.s2.Left; oldy2:=Form1.s2.Top; Form1.s2.Left:=oldx1; Form1.s2.Top:=oldy1; Form1.s3.Left:=oldx2; Form1.s3.Top:=oldy2; end; if (dx=0) and (dy=-1) then begin oldx2:=Form1.s2.Left; oldy2:=Form1.s2.Top; Form1.s2.Left:=oldx1; Form1.s2.Top:=oldy1; Form1.s3.Left:=oldx2; Form1.s3.Top:=oldy2; end; sleep(500); end; procedure Time.eat(); begin if ((Form1.s1.Top=Form1.food.Top) and (Form1.s1.Left=Form1.food.Left)) then Begin score:=score+1; Myfood(); end; end; procedure Time.crash(); begin if (Form1.s1.Top<0) or (Form1.s1.Top>300) or (Form1.s1.Left<0) or (Form1.s1.Left>300) then begin MessageDlg('You crashed. Your score = '+inttostr(score), mtError,[mbOk], 0); Form1.Close(); end; end; procedure Time.Execute; begin repeat Synchronize(Snake); Synchronize(Crash); Synchronize(eat); until Terminated; end; end.
Антиботан аватар за замовчуванням

20.02.2013 19:02

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини